import Draw from "./agreement/draw";
import Modal from "./agreement/modal";

// class Index {
//
//     /**
//      * 构造函数
//      * @param type 类型：modal(弹窗式)或draw(抽屉式)
//      * @param agreementNo 协议编号
//      * @version 协议版本号，不传默认使用最新版本
//      * @options 可选参数
//      *  @@ title
//      *  @@ confirmText
//      *  @@ confirmColor
//      *  @@ closeText
//      *  @@ closeColr
//      *  @@ showClose
//      *  @@ timeout
//      *  @@ forceRead
//      * @onStart 开始事件
//      * @onConfirm 确认事件
//      * @onClose 关闭事件
//      * @onError 错误事件
//      */
//     constructor({type, agreementNo, version, options, onStart, onConfirm, onClose, onError})  {
//         this.type = type;
//         this.agreementNo = agreementNo;
//         this.version = version;
//         this.options = options ? options: {};
//         this.onStart = onStart;
//         this.onConfirm = onConfirm;
//         this.onClose = onClose;
//         this.onError = onError;
//         this.widgetClass = {};
//         this.init();
//     }
//
//     // 获取手机号归属地地址
//     init() {
//         this.widgetClass["modal"] = Modal;
//         this.widgetClass["draw"] = Draw;
//         const clazz = this.widgetClass[this.type];
//         if (!clazz) {
//             console.log("暂不支持次模式");
//             return;
//         }
//         this.agreementModal = new clazz(this.agreementNo, this.options, this.onStart, this.onConfirm, this.onClose, this.onError);
//     }
//
//     openModal() {
//         this.agreementModal.openModal();
//     }
//     // 其他功能接口
//     close() {
//         this.agreementModal.close();
//     }
//
//     closeAndDispose() {
//         this.agreementModal.close();
//         this.agreementModal.dispose();
//     }
//
//
// }

global.AgreementSDK = {};

const widgetClassMap = new Map();
widgetClassMap.set("startModal", Modal);
widgetClassMap.set("startDraw", Draw);

const functionList = ["startModal", "startDraw"];

functionList.forEach((func) => {
    const currentWidget = widgetClassMap.get(func);
    global.AgreementSDK[func] = (options) => {
        const currentProxy = new Proxy(new currentWidget(options), {
            get(target, propKey) {
                return target[propKey];
            }
        })
        currentProxy.init().then(()=> {
            currentProxy.start();
        })
    };
})